package com.cloudfast.dao;

import java.util.List;

import com.cloudfast.common.page.Page;
import com.cloudfast.dao.conf.EntityParseInfo;
import com.cloudfast.entity.BaseEntity;

/**
 * 自定义简化jdbc 封装; 实现简单CURD
 *
 * @author liuyw
 * @date 2022年9月7日
 */
public interface SimpleRepository {

    /**
     * 报错修改用户
     *
     * @param <T>
     * @param entity
     */
    <T extends BaseEntity> void saveOrUpdate(T entity, EntityParseInfo ifno);

    /**
     * 根据主键查询
     *
     * @param <T>
     * @param id
     * @return
     * @throws Exception
     */
    <T extends BaseEntity> T findOne(Long id, EntityParseInfo ifno);

    /**
     * 根据主键查询
     *
     * @param <T>
     * @param id
     * @return
     */
    <T extends BaseEntity> T findOne(String id, EntityParseInfo ifno);

    /**
     * 根据主键删除
     *
     * @param id
     */
    <T extends BaseEntity> void delete(Long id, EntityParseInfo ifno);

    /**
     * 根据主键删除
     *
     * @param id
     */
    <T extends BaseEntity> void delete(String id, EntityParseInfo ifno);

    /**
     * 分页 查询
     *
     * @param <T>
     * @param page
     * @param entity
     * @return
     */
    <T extends BaseEntity> Page<T> nativeQueryPage(Page<T> page, T entity, EntityParseInfo ifno);

    /**
     * 查询列表
     *
     * @param <T>
     * @param entity
     * @param ifno
     * @return
     */
    <T extends BaseEntity> List<T> nativeQueryList(T entity, EntityParseInfo ifno);

}
